//389. 找不同

//给定两个字符串 s 和 t ，它们只包含小写字母。
//字符串 t 由字符串 s 随机重排，然后在随机位置添加一个字母。
//请找出在 t 中被添加的字母。

// //1.计数解法        也可以定义一个数组，s先统计个数，t在减，若有负数，则为答案
// char findTheDifference(char* s, char* t) 
// {
//     //计算两个字符串的长度
//     int s_len = strlen(s);
//     int t_len = strlen(t);

//     //定义两个数组用来存储计数
//     int arr1[26] = {0};
//     int arr2[26] = {0};

//     int i = 0;

//     //统计s的每个字母的数量
//     while(i < s_len)
//     {
//         arr1[s[i] - 'a']++;
//         i++;
//     }

//     //统计t的每个字母的数量
//     i = 0;
//     while(i < t_len)
//     {
//         arr2[t[i] - 'a']++;
//         i++;
//     }

//     //找出不同
//     for(i = 0; i < 26; i++)
//     {
//         if(arr1[i] != arr2[i])
//         {
//             return 'a' + i;
//         }
//     }

//     return '\0';     //要有返回值，若没有不同的话，返回‘\0’
// }


//2.异或解法：只用一个不同的字母，二进制中，相同为0，不同为1 
//a ^ a = 0,利用这一特性进行，即可找到不同的元素
char findTheDifference(char* s, char* t) 
{
    char res = 0;

    while(*s)
    {
        res ^= *s++;
    }

    while(*t)
    {
        res ^= *t++;
    }

    return res;
}

//3.求和：分别求和再相减，所得ASCII值就是增加的字母的ASCII值，直接返回。